package edu.hubu.book.dao;

import edu.hubu.book.domain.Book;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @author waxijiang
 */
@Repository
public interface SearchDao {

    /**
     * 分页查询函数
     *
     * @param start    查询页页码
     * @param pageSize 单页展示数量
     * @param bookName 书名
     * @param sid      一级分类id
     * @param ssid     二级分类id
     * @return Book列表
     */
    List<Book> findByPage(@Param("start") Integer start, @Param("pageSize") Integer pageSize,
                          @Param("bookName") String bookName, @Param("sid") Integer sid,
                          @Param("ssid") Integer ssid);

    /**
     * 根据一级分类名查询对应sid
     *
     * @param firstClassName 一级分类类名
     * @return sid
     */
    Integer findIdByFirstClassName(String firstClassName);

    /**
     * 根据二级分类名查询对应sid
     *
     * @param secondClassName 二级分类类名
     * @return ssid
     */
    Integer findIdBySecondClassName(String secondClassName);

    /**
     * 查询所有一级分类
     *
     * @return 一级分类列表
     */
    List<String> findAllFirstClass();


    /**
     * 根据一级分类的sid获取第二类类名
     * @param sid 第一类id
     * @return 对应的第二类类名列表
     */
    List<String> findAllSecondClassByFirstClassId(Integer sid);

    /**
     * 根据sid查找一级类名
     *
     * @param sid 一级分类id
     * @return firstClassName
     */
    String findFirstClassNameById(Integer sid);

    /**
     * 根据ssid查找二级类名
     *
     * @param ssid 二级分类id
     * @return secondClassName
     */
    String findSecondClassNameById(Integer ssid);

    /**
     * 获取搜索结果总数
     *
     * @param bookName 书名
     * @param sid      一级分类id
     * @param ssid     二级分类id
     * @return 查询结果总数
     */
    Integer getSearchCount(@Param("bookName") String bookName, @Param("sid") Integer sid, @Param("ssid") Integer ssid);
}
